/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores;


import Dao.exceptions.IllegalOrphanException;
import Dao.exceptions.NonexistentEntityException;
import Dao.exceptions.PreexistingEntityException;
import DaoExtendido.EspacioDeportivoExtension;
import Logico.EspacioDeportivo;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class ControladorEspacioDeportivo {

    EspacioDeportivoExtension daoEspacioDeportivo;
    ConnectionFactory conection;

    public ControladorEspacioDeportivo() {

        conection = new ConnectionFactory();
        daoEspacioDeportivo = new EspacioDeportivoExtension(conection.getFactory());
    }

    public boolean guardar(String nombre, int capacidadVip, int capacidadPlatino, int capacidadGeneral, String foto) {

        boolean guardado = false;

        EspacioDeportivo espacioDeportivo = new EspacioDeportivo();
        espacioDeportivo.setNombre(nombre);
        espacioDeportivo.setCapacidadVip(capacidadVip);
        espacioDeportivo.setCapacidadPlatino(capacidadPlatino);
        espacioDeportivo.setCapacidadGeneral(capacidadGeneral);
        espacioDeportivo.setFoto(foto);

        try {
            daoEspacioDeportivo.create(espacioDeportivo);
            guardado = true;

        } catch (PreexistingEntityException ex) {
            //JOptionPane.showMessageDialog(null, "Ya existe un Espacio Deportivo con el id: " + idespacioDeportivo + ". Por favor inténtelo de nuevo");
        } catch (Exception ex) {
            Logger.getLogger(ControladorEspacioDeportivo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return guardado;
    }

    public boolean borrar(int idespacioDeportivo) {

        boolean borrado = false;

        try {

            daoEspacioDeportivo.destroy(idespacioDeportivo);
            borrado = true;
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ControladorEspacioDeportivo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorEspacioDeportivo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return borrado;
    }

    public boolean modificar(int idespacioDeportivo, String nombre, int capacidadVip, int capacidadPlatino, int capacidadGeneral, String foto) {

        boolean modificado = false;

        EspacioDeportivo espacioDeportivoEncontrado = this.buscar(idespacioDeportivo);

        if (espacioDeportivoEncontrado != null) {

            espacioDeportivoEncontrado.setNombre(nombre);
            espacioDeportivoEncontrado.setCapacidadVip(capacidadVip);
            espacioDeportivoEncontrado.setCapacidadPlatino(capacidadPlatino);
            espacioDeportivoEncontrado.setCapacidadGeneral(capacidadGeneral);
            espacioDeportivoEncontrado.setFoto(foto);

            try {

                daoEspacioDeportivo.edit(espacioDeportivoEncontrado);
                modificado = true;
            } catch (IllegalOrphanException ex) {
                Logger.getLogger(ControladorEspacioDeportivo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(ControladorEspacioDeportivo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(ControladorEspacioDeportivo.class.getName()).log(Level.SEVERE, null, ex);
            }

        } else {
            JOptionPane.showMessageDialog(null, "El Espacio Deportivo no se encuentra en nuestro sistema.");
        }

        return modificado;
    }

    public EspacioDeportivo buscar(int idespacioDeportivo) {

        return daoEspacioDeportivo.findEspacioDeportivo(idespacioDeportivo);
    }
    
    public ArrayList<EspacioDeportivo> buscarPorNombre(String nombre) {

        return daoEspacioDeportivo.buscarPorNombre(nombre);
    }

    public List<EspacioDeportivo> listarEspacioDeportivos() {

        return daoEspacioDeportivo.findEspacioDeportivoEntities();
    }
}
